package cn.netdisk.tinynetdisk.service;

import cn.netdisk.tinynetdisk.common.entity.BaseFileContent;
import cn.netdisk.tinynetdisk.entity.ChunkFile;
import cn.netdisk.tinynetdisk.entity.FileInfo;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.util.List;

public interface INetDiskService {

    /**
     * 获取文件列表
     *
     * @param baseDir 基础路径
     * @return java.util.List<cn.netdisk.tinynetdisk.entity.FileInfo>
     * @date 2022/9/30 10:54
     * @author glq
     */
    List<FileInfo> getFileInfo(String baseDir);

    /**
     * 创建文件夹
     *
     * @param baseDir 基础路径
     * @return boolean
     * @date 2022/10/9 11:01
     * @author glq
     */
    boolean createDir(String baseDir);


    /**
     * 创建文件
     *
     * @param baseDir 基础路径
     * @return boolean
     * @date 2022/10/9 11:27
     * @author glq
     */
    boolean createFile(String baseDir) throws IOException;

    /**
     * 读取文件内容 txt版
     *
     * @param baseDir 基础路径
     * @return cn.netdisk.tinynetdisk.common.entity.BaseFileContent
     * @date 2022/10/9 18:12
     * @author glq
     */
    BaseFileContent readFile(String baseDir);

    /**
     * 写入文件内容 txt版
     *
     * @param baseFileContent 内容
     * @return boolean
     * @date 2022/10/10 8:33
     * @author glq
     */
    boolean writeFile(BaseFileContent baseFileContent);

    /**
     * 删除文件
     *
     * @param baseDir 基础路径
     * @return boolean
     * @date 2022/10/13 11:23
     * @author glq
     */
    boolean deleteFile(String baseDir);

    /**
     * 重命名文件
     *
     * @param baseDir 基础路径
     * @param oldName 旧名称
     * @param newName 新名称
     * @return boolean
     * @date 2022/10/13 11:23
     * @author glq
     */
    boolean renameFile(String baseDir,String oldName,String newName);

    /**
     * 上传块文件
     *
     * @param file 块文件信息
     * @return boolean
     * @date 2022/10/13 16:58
     * @author glq
     */
    boolean uploadFile(ChunkFile chunkFile, MultipartFile file) throws IOException;

    /**
     * 合并块文件
     *
     * @param chunkFile 块文件信息
     * @param baseDir 某目录
     * @return boolean
     * @date 2022/10/13 17:01
     * @author glq
     */
    boolean mergeFiles(ChunkFile chunkFile, String baseDir) throws IOException;


    /**
     * 块文件信息
     *
     * @param chunkFile 块文件信息
     * @param baseDir 某目录
     * @return List
     * @date 2022/10/13 17:01
     * @author glq
     */
    List<File> getChunkFiles(ChunkFile chunkFile,String baseDir);




}
